package Servlets;

import Datos.GrupoDescargas;
import Datos.Tema;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Iterator;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet que se encarga de la página de detalle de mostrar un tema concreto
 * @author Mikel&Igor
 */
public class MuestraTema extends HttpServlet {

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse res)
            throws ServletException, IOException 
    {
        String consulta=""; //Su consulta
        int id=-1; //Id del tema
        ArrayList<Tema> list;
        Tema tema;
        ServletContext context=getServletContext();

        //Redireccionar si no es correcto alguno de los parámetros
        if((list=(ArrayList<Tema>)context.getAttribute("list"))==null || (consulta=req.getParameter("tema"))==null)
            res.sendRedirect("./index.jsp");
        else
        {

            //Comprobamos el id también
            try
            {
                id=Integer.parseInt(req.getParameter("id"));
            }
            catch(NumberFormatException ex)
            {
                res.sendRedirect("./index.jsp");
            }

            if(id>list.size()-1)
                res.sendRedirect("./index.jsp");
            else {

                 //Tipo de la respuesta
                res.setContentType("text/html");
                PrintWriter out = res.getWriter();

                //Cabeceras HTML
                out.println("<html>\n"+"<head>\n");
                out.println("<meta http-equiv=\"Content-Type\" content=\"text/html; charset=ISO-8859-1\">\n");

                //Título de la página
                out.println("<title>"+consulta+"</title>\n");

                //CSS
                out.println("<style type='text/css'>\n");
                out.println("\th1.title{\n\t\tcolor: green;\n\t\ttext-align: left;\n\t\tfont-size: 25px;\n\t}");
                out.println("\t.main {\n\t\theight: 500px;\n\t\twidth: 700px;\n\t\tmargin: auto;\n\t}");
                out.println("\t.text {\n\t\twidth:300px;\n\t}");
                out.println("\t.tema {\n\t\tfont-size:14;\n\t\ttext-align: center;\n\t}");
                out.println("\t.foro {\n\t\tfont-size:14px;\n\t\tcolor: gray;\n\t}");
                out.println("\th2{\n\t\ttext-align: center\n\t\tfont-size: 20px;\n\t}");
                out.println("\t.logo{\n\t\ttext-decoration: none;\n\t}");
                out.println("\tp.sang {\n\t\ttext-indent: 50px;\n\t}");
                out.println("</style>\n</head>\n\n");

                //Body
                out.println("<body>\n\t<div class=\"main\">\n");
                  //out.println("\t\t<a class=\"logo\" href=\"./index.jsp\"><h1 class=\"title\">LINKZ</h1></a>\n");
                out.println("\t\t<a class=\"logo\" href=\"./index.jsp\"><img src=\"http://creatr.cc/creatr/logo/Linkz.png\" alt=\"Linkz\"/></a>\n");
                out.println("\t\t<form action=\"./lista\" method=\"POST\">\n");

                //En el cuadro de texto metemos lo que el ha escrito
                out.println("\t\t\t<input type=\"text\" name=\"consulta\" value=\""+consulta+"\" class=\"text\" align=\"center\"></input>\n");
                out.println("\t\t\t<input type=\"submit\" name=\"submit\" value=\"Buscar!\"></input>\n</form>\n");

                out.println("\t\t<br><br>\n");

                //Seleccionamos el tema
                if(list!=null)
                {
                    tema=list.get(id);

                    //Lo mostramos
                    mostrarDetalle(tema, out);

                    out.println("\t</div>\n</body>\n</html>");
                }
            }
        }
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        doGet(req, resp); //Mandamos a doGet
    }

    /**
     * Método encargado de mostrar los detalles de un tema
     * @param tema El tema del que se mostrarán los detalles
     * @param out Por donde se mostrarán los detalles
     */
    public void mostrarDetalle(Tema tema, PrintWriter out)
    {
        ArrayList<GrupoDescargas> gdList=tema.getGdList();
        Iterator<GrupoDescargas> it=gdList.iterator();

        //Mostramos el título
        out.println("\t\t<h2>"+tema.getTituloGeneral()+"</h2>\n");
        out.println("\t\t<a class=\"foro\" href=\""+tema.getURL()+"\">"+tema.getURL()+"</a>\n\t\t<br><br>\n");

        //Vamos grupo de descargas por grupo de descargas
        while(it.hasNext())
        {
            GrupoDescargas gd = it.next();

            //Identificador del Grup de Descargas
            out.println("<p class=\"gd\">"+gd.getIdentificador()+"</p>");

            //Para cada enlace del grupo de descargas, hacemos lo mismo
            Iterator<String> itString = gd.getListaEnlaces().iterator();

            while(itString.hasNext())
            {
                String enlace = itString.next();

                out.println("<p class=\"sang\"><a href=\""+enlace+"\" class=\"enlace\">"+enlace+"</a></p>");
            }

            out.println("<br>");
        }
    }
}
